//
//  AdManager.h
//  os-usrsrc_Example
//
//  Created by neil on 2019/7/15.
//  Copyright © 2019 neil. All rights reserved.
//  version 0.1.2 测试版本

#import <Foundation/Foundation.h>
@class AdId;

#import "InterstitialAdBaseManager.h"


/**
    广告相关的回调
 */
@protocol AdManagerDelegate <NSObject>

@optional

/**
 激励视频成功与否回调

 @param success [success boolValue] == true 为观看激励视频成功，给予奖励
 */
- (void)rewardVideoReward:(NSNumber *)success;

/**
激励视频成功与否回调

@param success [success boolValue] == true 为观看激励视频成功，给予奖励
@param param showReward 传入的参数
*/
//- (void)rewardVideoReward:(NSNumber *)success param:(id)param;

/**
 通知前端显示激励视频 loading
 */
//- (void)showLoadingRewardVideoWindow;

/**
 通知前端隐藏激励视频 loading
 */
//- (void)hideLoadingRewardVideoWindow;

/**
 激励视频即将显示的回调
 */
- (void)rewardVideoWillShow;

/**
 启动屏广告即将展示
 */
- (void)splashAdWillOpen;
/**
 启动屏广告展示结束。
 */
- (void)splashAdDidClose;

@end
typedef void(^IsReadyCB)(BOOL);
typedef void(^RewardVideoReadyCB)(void);

@interface AdManager : NSObject

@property(nonatomic, assign, readonly)BOOL testMode;

/**
 必须执行的初始化方法

 @param testMode 为true unity广告的测试模式
 */
+ (void)instanceInitWithTestMode:(BOOL)testMode delegate:(id<AdManagerDelegate>)delegate;

//+ (void)initGoogleSDK;

/**
 展示插屏广告

 @param type 插件广告类型
 @param interval 类型为 next_level时 相差间隔 小于此参数，则不展示
 */
+ (void)showInterstitialWithType:(InterstitialEnum)type interval:(NSInteger)interval;

/**
 展示插屏广告
 
 @param type 插件广告类型  默认间隔 60s
 */
+ (void)showInterstitialWithType:(InterstitialEnum)type;


/// isReady block中返回激励视频是否缓冲完成。如果此时 isReady = true 只会在isReady block中回调。 未完成状态，缓冲完成后 只会在readyCallBack block 中 进行回调
+ (void)isRewardVideoReady:(IsReadyCB) isReady rewardVideoReady:(RewardVideoReadyCB) rewardVideoReady;

///展示激励视频广告   调用show之前需调用isRewardVideoReady:rewardVideoReady:方法，等待rewardVideoReady block回调
+ (void)showRewardVideo;
//展示激励视频广告  携带参数版本
+ (void)showRewardVideoParam:(id)param;
//取消展示激励视频，加载完成后不会展示视频广告
+ (void)userCancelRewardVideo;

/**
 是否显示log 默认false
 */
//@property(nonatomic,assign)BOOL showLog;
//a/b test 用于标记 是否是实验用户  new 代表使用新版逻辑 usrsrc_abTestType的 value = 2

//- (BOOL)abTestNew;

@end

